package logica_de_presentacion;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyVetoException;
import java.util.ArrayList;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

import comun.Pelicula;
import logica_de_negocio.ExcepDeleteOnCascade;
import logica_de_negocio.gestorPeli;

public class FormularioBorrarPeliculaPorActorPrincipal extends JInternalFrame implements
		ActionListener {

	private static final long serialVersionUID = 1L;
	protected JComboBox<String> jcActor;
	protected JButton borrar, cancelar;
	private MenuInicial clasePadre;
	private String actorPrinci;

	public FormularioBorrarPeliculaPorActorPrincipal(MenuInicial clasePadre) throws ClassNotFoundException {

		super("Buscar Pelicula por titulo", true, true, true, true);
		this.setVisible(true);
		this.clasePadre=clasePadre;
		this.getContentPane().setLayout(new BorderLayout());

		JPanel pBotones = new JPanel();

		// BORRAR
		ImageIcon imagenBorrar = createImageIcon("/logica_de_presentacion/imagenes/BORRAR.gif");
		borrar = new JButton("Borrar", imagenBorrar);
		borrar.addActionListener(this);
		pBotones.add(borrar);

		// CANCELAR
		ImageIcon imagenCancelar = createImageIcon("/logica_de_presentacion/imagenes/CANCELAR.gif");
		cancelar = new JButton("Cancelar", imagenCancelar);
		cancelar.addActionListener(this);
		pBotones.add(cancelar, "South");

		// BOTONES
		this.getContentPane().add(pBotones, BorderLayout.SOUTH);

		gestorPeli gp = new gestorPeli();

		jcActor = new JComboBox<String>(gp.getActorPrinc());

		this.getContentPane().add(jcActor, BorderLayout.CENTER);
		JLabel jl = new JLabel("Indicar  ACTOR PRINCIPAL");
		this.getContentPane().add(jl, BorderLayout.NORTH);

		this.pack();

	}
	@Override
	public void actionPerformed(ActionEvent e) {

		JButton BotonPulsado = (JButton) e.getSource();

		if (BotonPulsado == cancelar) {
			this.dispose();
		}
		if (BotonPulsado == borrar) {

			actorPrinci = (String) jcActor.getSelectedItem();
			try {
				borrar();
			} catch (ClassNotFoundException e1) {
				JOptionPane.showMessageDialog(new Frame(),
						"No hay informacion en la base de datos");
				this.dispose();
			}
			this.dispose();

		}
	}

	/** Returns an ImageIcon, or null if the path was invalid. */
	protected static ImageIcon createImageIcon(String path) // ICONO
	{
		java.net.URL imgURL = Button.class.getResource(path);
		if (imgURL != null) {
			return new ImageIcon(imgURL);
		} else {
			System.err.println("Couldn't find file: " + path);
			return null;
		}
	}

	public void borrar() throws ClassNotFoundException {

		gestorPeli gp = new gestorPeli();

		ArrayList<Pelicula> retorno = gp.busActor(actorPrinci);
		
		if (retorno.size() == 1) {
			boolean bor=false;
			Pelicula p = retorno.get(0);// COMO SOLO HAY UNO
			int id_p=p.getId_p();
			try {
				bor = gp.borrar(id_p, new ExcepDeleteOnCascade());
			} catch (ExcepDeleteOnCascade e) {
				int res = JOptionPane
						.showConfirmDialog(
								new Frame(),
								"Al eliminar la pelicula tambien se eliminaran los comentarios de los usuarios y estos dejaran de seguir la pelicula, Desea borrarla?");
				// YES=0, NO=1,Cancel =2
				if (res == 0) {
					e.setAceptado(true);
					try {
						bor = gp.borrar(id_p, e);
					} catch (ExcepDeleteOnCascade e2) {
					}
				}
			}
			if (bor) {
				JOptionPane.showMessageDialog(new Frame(), "Se ha borrado la pelicula");
			} else {
				JOptionPane.showMessageDialog(new Frame(), "NO se ha borrado la pelicula");
			}
		} else {
			
			
			int res=JOptionPane.showConfirmDialog(new Frame(), "Mas de una pelicula tiene como actor principal ese actor,\n Para borrar la pelicula es necesario intoducir mas datos\nLos va ha introducir?");
			if(res==0){
			
				FormularioBorrarPeliculaPorTitulo formularioBorrarPeliculaPorTitulo=new FormularioBorrarPeliculaPorTitulo(clasePadre);
				clasePadre.add(formularioBorrarPeliculaPorTitulo);
				try {
					formularioBorrarPeliculaPorTitulo.setSelected(true);
				} catch (PropertyVetoException e) {	}
				this.dispose();
				
			} else {
				JOptionPane.showMessageDialog(new Frame(), "NO se ha borrado la pelicula");
			}
		}
	}
}
